<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "https://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="zh-CN" />
<!--[if lt IE 9]><style type="text/css">@font-face { font-family: "JinBuGuoWebMono"; src: url("/d/mono.eot"); }</style><![endif]-->
<style media="all" type="text/css">
@font-face { font-family: "JinBuGuoWebMono"; src: url("http://www.jinbuguo.com/d/mono.ttf") format("truetype"); }
* { font-family: "JinBuGuoWebMono", "Ubuntu Mono", "Consolas", "Menlo", monospace; }
body { margin:10px; }
h1,h2 { text-align:center; background:#ddd; }
h2 { margin: 10px 5%; }
h2#auth_name {  background:#fff; }
dt { margin-top: 0.5em; }
</style>
<title>ssh-keygen 中文手册 [金步国]</title>
<script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d286c55b63a3c54a1e43d10d4c203e75"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script>
</head>

<body>
<h1>ssh-keygen 中文手册</h1><h2 id="auth_name">译者：<strong><a href="../index.html">金步国</a></strong></h2>
<hr />
<h3>版权声明</h3>
<p>本文译者是一位开源理念的坚定支持者，所以本文虽然不是软件，但是遵照开源的精神发布。</p>
<ul>
<li>无担保：本文译者不保证译文内容准确无误，亦不承担任何由于使用此文档所导致的损失。</li>
<li>自由使用：任何人都可以自由的<u>阅读/链接/打印</u>此文档，无需任何附加条件。</li>
<li>名誉权：任何人都可以自由的<u>转载/引用/再创作</u>此文档，但必须保留译者署名并注明出处。</li>
</ul>
<h3>其他作品</h3>
<p>本文译者十分愿意与他人分享劳动成果，如果你对我的其他翻译作品或者技术文章有兴趣，可以在如下位置查看现有的作品集：</p>
<ul>
<li><a href="../index.html">金步国作品集</a> [ <a href="../index.html">http://www.jinbuguo.com/</a> ]</li>
</ul>
<h3>联系方式</h3>
<p>由于译者水平有限，因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好)，请来信指出，任何提高译文质量的建议我都将虚心接纳。</p>
<ul>
<li>Email(QQ)：70171448在QQ邮箱</li>
</ul>
<hr />



<pre>
SSH-KEYGEN(1)              OpenBSD Reference Manual              SSH-KEYGEN(1)

<a name="NAME" href="ssh-keygen.html#end"><b>名称</b></a>
     <b>ssh-keygen</b> - 生成、管理和转换认证密钥


<a name="SYNOPSIS" href="ssh-keygen.html#end"><b>语法</b></a>
     <b>ssh-keygen</b> [<b>-q</b>] [<b>-b</b> <i>bits</i>] <b>-t</b> <i>type</i> [<b>-N</b> <i>new_passphrase</i>] [<b>-C</b> <i>comment</i>] [<b>-f</b> <i>output_keyfile</i>]
     <b>ssh-keygen -p</b> [-P <i>old_passphrase</i>] [-N <i>new_passphrase</i>] [-f <i>keyfile</i>]
     <b>ssh-keygen -i</b> [-f <i>input_keyfile</i>]
     <b>ssh-keygen -e</b> [-f <i>input_keyfile</i>]
     <b>ssh-keygen -y</b> [-f <i>input_keyfile</i>]
     <b>ssh-keygen -c</b> [-P <i>passphrase</i>] [-C <i>comment</i>] [-f <i>keyfile</i>]
     <b>ssh-keygen -l</b> [-f <i>input_keyfile</i>]
     <b>ssh-keygen -B</b> [-f <i>input_keyfile</i>]
     <b>ssh-keygen -D</b> <i>reader</i>
     <b>ssh-keygen -F</b> <i>hostname</i> [-f <i>known_hosts_file</i>]
     <b>ssh-keygen -H</b> [-f <i>known_hosts_file</i>]
     <b>ssh-keygen -R</b> <i>hostname</i> [-f <i>known_hosts_file</i>]
     <b>ssh-keygen -U</b> <i>reader</i> [-f <i>input_keyfile</i>]
     <b>ssh-keygen -r</b> <i>hostname</i> [-f <i>input_keyfile</i>] [-g]
     <b>ssh-keygen -G</b> <i>output_file</i> [-v] [-b <i>bits</i>] [-M <i>memory</i>] [-S <i>start_point</i>]
     <b>ssh-keygen -T</b> <i>output_file</i> -f <i>input_file</i> [-v] [-a <i>num_trials</i>] [-W <i>generator</i>]


<a name="DESCRIPTION" href="ssh-keygen.html#end"><b>描述</b></a>
     <b>ssh-keygen</b> 用于为 <a href="http://www.jinbuguo.com/openssh/ssh.html">ssh(1)</a>生成、管理和转换认证密钥，包括 RSA 和 DSA 两种密钥。
     密钥类型可以用 <b>-t</b> 选项指定。如果没有指定则默认生成用于SSH-2的RSA密钥。

     <b>ssh-keygen</b> 还可以用来产生 Diffie-Hellman group exchange (DH-GEX) 中使用的素数模数。
     参见<i>模数</i>和<i>生成</i>小节。

     一般说来，如果用户希望使用RSA或DSA认证，那么至少应该运行一次这个程序，
     在 <i>~/.ssh/identity</i>, <i>~/.ssh/id_dsa</i> 或 <i>~/.ssh/id_rsa</i> 文件中创建认证所需的密钥。
     另外，系统管理员还可以用它产生主机密钥。

     通常，这个程序产生一个密钥对，并要求指定一个文件存放私钥，同时将公钥存放在附加了".pub"后缀的同名文件中。
     程序同时要求输入一个密语字符串(passphrase)，空表示没有密语(主机密钥的密语必须为空)。
     密语和口令(password)非常相似，但是密语可以是一句话，里面有单词、标点符号、数字、空格或任何你想要的字符。
     好的密语要30个以上的字符，难以猜出，由大小写字母、数字、非字母混合组成。密语可以用 <b>-p</b> 选项修改。

     丢失的密语不可恢复。如果丢失或忘记了密语，用户必须产生新的密钥，然后把相应的公钥分发到其他机器上去。

     RSA1的密钥文件中有一个"注释"字段，可以方便用户标识这个密钥，指出密钥的用途或其他有用的信息。
     创建密钥的时候，注释域初始化为"user@host"，以后可以用 <b>-c</b> 选项修改。

     密钥产生后，下面的命令描述了怎样处置和激活密钥。可用的选项有：

     <b>-a</b> <i>trials</i>
             在使用 <b>-T</b> 对 DH-GEX 候选素数进行安全筛选时需要执行的基本测试数量。

     <b>-B</b>      显示指定的公钥/私钥文件的 bubblebabble 摘要。

     <b>-b</b> <i>bits</i>
             指定密钥长度。对于RSA密钥，最小要求768位，默认是2048位。DSA密钥必须恰好是1024位(FIPS 186-2 标准的要求)。

     <b>-C</b> <i>comment</i>
             提供一个新注释

     <b>-c</b>      要求修改私钥和公钥文件中的注释。本选项只支持 RSA1 密钥。
             程序将提示输入私钥文件名、密语(如果存在)、新注释。

     <b>-D</b> <i>reader</i>
             下载存储在智能卡 <i>reader</i> 里的 RSA 公钥。

     <b>-e</b>      读取OpenSSH的私钥或公钥文件，并以 RFC 4716 SSH 公钥文件格式在 stdout 上显示出来。
             该选项能够为多种商业版本的 SSH 输出密钥。

     <b>-F</b> <i>hostname</i>
             在 <i>known_hosts</i> 文件中搜索指定的 <i>hostname</i> ，并列出所有的匹配项。
             这个选项主要用于查找散列过的主机名/ip地址，还可以和 <b>-H</b> 选项联用打印找到的公钥的散列值。

     <b>-f</b> <i>filename</i>
             指定密钥文件名。

     <b>-G</b> <i>output_file</i>
             为 DH-GEX 产生候选素数。这些素数必须在使用之前使用 <b>-T</b> 选项进行安全筛选。

     <b>-g</b>      在使用 <b>-r</b> 打印指纹资源记录的时候使用通用的 DNS 格式。

     <b>-H</b>      对 <i>known_hosts</i> 文件进行散列计算。这将把文件中的所有主机名/ip地址替换为相应的散列值。
             原来文件的内容将会添加一个".old"后缀后保存。这些散列值只能被 <b>ssh</b> 和 <b>sshd</b> 使用。
             这个选项不会修改已经经过散列的主机名/ip地址，因此可以在部分公钥已经散列过的文件上安全使用。

     <b>-i</b>      读取未加密的SSH-2兼容的私钥/公钥文件，然后在 stdout 显示OpenSSH兼容的私钥/公钥。
             该选项主要用于从多种商业版本的SSH中导入密钥。

     <b>-l</b>      显示公钥文件的指纹数据。它也支持 RSA1 的私钥。
             对于RSA和DSA密钥，将会寻找对应的公钥文件，然后显示其指纹数据。

     <b>-M</b> <i>memory</i>
             指定在生成 DH-GEXS 候选素数的时候最大内存用量(MB)。

     <b>-N</b> <i>new_passphrase</i>
             提供一个新的密语。

     <b>-P</b> <i>passphrase</i>
             提供(旧)密语。

     <b>-p</b>      要求改变某私钥文件的密语而不重建私钥。程序将提示输入私钥文件名、原来的密语、以及两次输入新密语。

     <b>-q</b>      安静模式。用于在 <i>/etc/rc</i> 中创建新密钥的时候。

     <b>-R</b> <i>hostname</i>
             从 <i>known_hosts</i> 文件中删除所有属于 <i>hostname</i> 的密钥。
             这个选项主要用于删除经过散列的主机(参见 <b>-H</b> 选项)的密钥。

     <b>-r</b> <i>hostname</i>
             打印名为 <i>hostname</i> 的公钥文件的 SSHFP 指纹资源记录。

     <b>-S</b> <i>start</i>
             指定在生成 DH-GEX 候选模数时的起始点(16进制)。

     <b>-T</b> <i>output_file</i>
             测试 Diffie-Hellman group exchange 候选素数(由 <b>-G</b> 选项生成)的安全性。

     <b>-t</b> <i>type</i>
             指定要创建的密钥类型。可以使用："rsa1"(SSH-1) "rsa"(SSH-2) "dsa"(SSH-2)

     <b>-U</b> <i>reader</i>
             把现存的RSA私钥上传到智能卡 <i>reader</i>

     <b>-v</b>      详细模式。<b>ssh-keygen</b> 将会输出处理过程的详细调试信息。常用于调试模数的产生过程。
             重复使用多个 <b>-v</b> 选项将会增加信息的详细程度(最大3次)。

     <b>-W</b> <i>generator</i>
             指定在为 DH-GEX 测试候选模数时想要使用的 generator

     <b>-y</b>      读取OpenSSH专有格式的公钥文件，并将OpenSSH公钥显示在 stdout 上。


<a name="MODULI+GENERATION" href="ssh-keygen.html#end"><b>模数生成</b></a>
     <b>ssh-keygen</b> 可以生成用于 Diffie-Hellman Group Exchange (DH-GEX) 协议的 groups 。
     生成过程分为两步：
     首先，使用一个快速且消耗内存较多的方法生成一些候选素数。然后，对这些素数进行适应性测试(消耗CPU较多)。

     可以使用 <b>-G</b> 选项生成候选素数，同时使用 <b>-b</b> 选项制定其位数。例如：

           # ssh-keygen -G moduli-2048.candidates -b 2048

     默认将从指定位数范围内的一个随机点开始搜索素数，不过可以使用 <b>-S</b> 选项来指定这个随机点(16进制)。

     生成一组候选数之后，接下来就需要使用 <b>-T</b> 选项进行适应性测试。
     此时 <b>ssh-keygen</b> 将会从 stdin 读取候选素数(或者通过 <b>-f</b> 选项读取一个文件)，例如：

           # ssh-keygen -T moduli-2048 -f moduli-2048.candidates

     每个候选素数默认都要通过 100 个基本测试(可以通过 <b>-a</b> 选项修改)。
     DH generator 的值会自动选择，但是你也可以通过 <b>-W</b> 选项强制指定。有效的值可以是： 2, 3, 5

     经过筛选之后的 DH groups 就可以存放到 <i>/etc/ssh/moduli</i> 里面了。
     很重要的一点是这个文件必须包括不同长度范围的模数，而且通信双方双方共享相同的模数。


<a name="FILES" href="ssh-keygen.html#end"><b>文件</b></a>
     ~/.ssh/identity
             该用户默认的 RSA1 身份认证私钥(SSH-1)。此文件的权限应当至少限制为"600"。
             生成密钥的时候可以指定采用密语来加密该私钥(3DES)。
             <a href="http://www.jinbuguo.com/openssh/ssh.html">ssh(1)</a> 将在登录的时候读取这个文件。

     ~/.ssh/identity.pub
             该用户默认的 RSA1 身份认证公钥(SSH-1)。此文件无需保密。
             此文件的内容应该添加到所有 RSA1 目标主机的 <i>~/.ssh/authorized_keys</i> 文件中。

     ~/.ssh/id_dsa
             该用户默认的 DSA 身份认证私钥(SSH-2)。此文件的权限应当至少限制为"600"。
             生成密钥的时候可以指定采用密语来加密该私钥(3DES)。
             <a href="http://www.jinbuguo.com/openssh/ssh.html">ssh(1)</a> 将在登录的时候读取这个文件。

     ~/.ssh/id_dsa.pub
             该用户默认的 DSA 身份认证公钥(SSH-2)。此文件无需保密。
             此文件的内容应该添加到所有 DSA 目标主机的 <i>~/.ssh/authorized_keys</i> 文件中。

     ~/.ssh/id_rsa
             该用户默认的 RSA 身份认证私钥(SSH-2)。此文件的权限应当至少限制为"600"。
             生成密钥的时候可以指定采用密语来加密该私钥(3DES)。
             <a href="http://www.jinbuguo.com/openssh/ssh.html">ssh(1)</a> 将在登录的时候读取这个文件。

     ~/.ssh/id_rsa.pub
             该用户默认的 RSA 身份认证公钥(SSH-2)。此文件无需保密。
             此文件的内容应该添加到所有 RSA 目标主机的 <i>~/.ssh/authorized_keys</i> 文件中。

     /etc/ssh/moduli
             包含用于 DH-GEX 的 Diffie-Hellman groups 。文件的格式在 <a href="moduli.html">moduli(5)</a> 手册页中描述。


<a name="SEE+ALSO" href="ssh-keygen.html#end"><b>参见</b></a>
     <a href="http://www.jinbuguo.com/openssh/ssh.html">ssh(1)</a>, <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-add">ssh-add(1)</a>, <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-agent">ssh-agent(1)</a>, <a href="moduli.html">moduli(5)</a>, <a href="sshd.html">sshd(8)</a>

     <i>The</i> <i>Secure</i> <i>Shell</i> <i>(SSH)</i> <i>Public</i> <i>Key</i> <i>File</i> <i>Format</i>, RFC 4716, 2006.

OpenBSD 4.2                      May 31, 2007                                5
</pre>


<hr />


</body></html>